From 9d8b846e8088676f3c47d39546d883109a7bdec3 Mon Sep 17 00:00:00 2001 From: Richard Hult Date: Tue, 25 Mar 2008 13:49:03 +0000 Subject: [PATCH] Bail out early if we can't find a matching window. 2008-03-25 Richard Hult * gdk/quartz/gdkevents-quartz.c: (_gdk_quartz_events_trigger_crossing_events): Bail out early if we can't find a matching window. * gdk/quartz/gdkwindow-quartz.c: (show_window_internal): Add a comment, and only trigger an event for non-temp windows, fixes problems for tooltips caused by the workarounds for the problematic tracking rect API. svn path=/trunk/; revision=19934 --- ChangeLog | 11 +++++++++++ gdk/quartz/gdkevents-quartz.c | 2 +- gdk/quartz/gdkwindow-quartz.c | 5 ++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5159ce7c0f..2e70115e12 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2008-03-25 Richard Hult + + * gdk/quartz/gdkevents-quartz.c: + (_gdk_quartz_events_trigger_crossing_events): Bail out early if we + can't find a matching window. + + * gdk/quartz/gdkwindow-quartz.c: (show_window_internal): Add a + comment, and only trigger an event for non-temp windows, fixes + problems for tooltips caused by the workarounds for the + problematic tracking rect API. + 2008-03-25 Richard Hult * gdk/quartz/gdkwindow-quartz.c: diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c index 6d3165220c..dc7701b6fd 100644 --- a/gdk/quartz/gdkevents-quartz.c +++ b/gdk/quartz/gdkevents-quartz.c @@ -1109,7 +1109,7 @@ _gdk_quartz_events_trigger_crossing_events (void) y = _gdk_quartz_window_get_inverted_screen_y (point.y); mouse_window = _gdk_quartz_window_find_child (_gdk_root, x, y); - if (mouse_window == _gdk_root) + if (!mouse_window || mouse_window == _gdk_root) return; /* NSMouseEntered always happens on the toplevel. */ diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c index 6aec5e1a4f..ddf2e81cdc 100644 --- a/gdk/quartz/gdkwindow-quartz.c +++ b/gdk/quartz/gdkwindow-quartz.c @@ -1137,7 +1137,10 @@ show_window_internal (GdkWindow *window, if (impl->transient_for && !GDK_WINDOW_DESTROYED (impl->transient_for)) _gdk_quartz_window_attach_to_parent (window); - if (impl->toplevel) + /* Create a crossing event for managed windows that pop up under the + * mouse. Part of the workarounds for problems with the tracking rect API. + */ + if (impl->toplevel && private->window_type != GDK_WINDOW_TEMP) _gdk_quartz_events_trigger_crossing_events (); GDK_QUARTZ_RELEASE_POOL; -- 2.30.2